package pers.xiaojun.boot.module.system.service.dict;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.stereotype.Service;
import pers.xiaojun.boot.module.system.controller.dict.vo.type.DictTypeQueryReqVO;
import pers.xiaojun.boot.module.system.controller.dict.vo.type.DictTypeSaveReqVO;
import pers.xiaojun.boot.module.system.dao.entity.dept.DeptDO;
import pers.xiaojun.boot.module.system.dao.entity.dict.DictTypeDO;

import java.util.List;

/**
 * 字典类型服务层
 *
 * @author xiaojun
 * @since 2025-11-05
 */
public interface DictTypeService extends IService<DictTypeDO> {

    /**
     * 创建字典
     *
     * @param saveVO 创建字典类型数据
     * @return 字典
     */
    DictTypeDO saveDictType(DictTypeSaveReqVO saveVO);

    /**
     * 更新字典
     *
     * @param updateVO 更新字典数据
     * @return 字典
     */
    DictTypeDO updateDictType(DictTypeSaveReqVO updateVO);

    /**
     * 根据字典Id删除字典
     *
     * @param dictId 字典Id
     */
    void removeDictTypeById(Long dictId);

    /**
     * 根据字典Id删除一批字典
     *
     * @param dictIds 字典Id
     */
    void removeDictTypeByIds(List<Long> dictIds);

    /**
     * 根据Id获取字典
     *
     * @param deptId 字典Id
     * @return 字典
     */
    DictTypeDO getDeptTypeById(Long deptId);

    /**
     * 分页查询字典
     *
     * @param queryVO 查询参数
     * @return 分页数据
     */
    Page<DictTypeDO> listDictTypesPage(DictTypeQueryReqVO queryVO);

    /**
     * 根据字典类型校验字典是否存在
     *
     * @param DictType 字典类型
     * @return 字典
     */
    DictTypeDO validateDictTypeExists(String DictType);

}
